16.09.2009

Обмен данными с Web-сайтом

Для решения задачи публикации информации о реализуемом товаре, размещения заказов на сайте, приема и обработки заказов и каталогов товаров непосредственно из интерфейсов системы "1С:Предприятие 8" фирмами "1С" и "1С-Битрикс" разработан открытый протокол взаимодействия WEB-сайта и прикладной торговой системы.

Функционально обмен делится на два бизнес-процесса:

1. Выгрузка на сайт коммерческих предложений (каталогов продукции).

2. Прием информации о заказах.

Первый бизнес-процесс обеспечивает публикацию на сайте каталога номенклатурных позиций. Второй необходим для передачи с сайта в информационную систему данных о заказах с сайта и дальнейшую синхронизацию статусов и параметров заказов.

В обоих случаях инициатором обмена выступает система "1С:Предприятие 8". Обмен электронными документами осуществляется в соответствии с форматами, описанными XML-схемой стандарта CommerceML, редакция 2.04 (Загрузить).

Выгрузка каталогов продукции

Каталоги для публикации на сайте выгружаются одним пакетом.

Начало сеанса

Выгрузка каталога начинается с того, что система "1С:Предприятие 8" отправляет http-запрос следующего вида:

http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=checkauth.

В ответ система управления сайтом передает системе "1С:Предприятие 8" три строки (используется разделитель строк "\n"):

Все последующие запросы к системе управления сайтом со стороны "1С:Предприятия 8" содержат в заголовке запроса имя и значение Cookie.

Запрос параметров от сайта

Далее следует запрос следующего вида:

http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=init

В ответ система управления сайтом передает две строки:

1. zip=yes, если сервер поддерживает обмен в zip-формате - в этом случае на следующем шаге файлы должны быть упакованы в zip-формате, или zip=no - в этом случае на следующем шаге файлы не упаковываются и передаются каждый по отдельности.

2. file_limit=<число>, где <число> - максимально допустимый размер файла в байтах для передачи за один запрос. Если системе "1С:Предприятие 8" понадобится передать файл большего размера, его следует разделить на фрагменты.

Выгрузка на сайт

"1С:Предприятие 8" формирует запросы вида:

http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=file&filename=<имя файла>

для выгрузки на сайт файлов в формате CommerceML. Обмен происходит в виде POST.

В случае успешной записи файла система управления сайтом выдает строку "success".

Пошаговая загрузка каталога

Из "1С:Предприятия 8" производится пошаговая загрузка каталога по запросу с параметрами вида:

http://<сайт>/<путь>/1c_exchange.php?type=catalog&mode=import&filename=<имя файла>

Во время загрузки система управления сайтом направляет ответ в одном из следующих вариантов.

1. Если в первой строке содержится слово "progress", это означает необходимость послать тот же запрос еще раз. В этом случае во второй строке будет возвращен текущий статус обработки, объем загруженных данных, статус импорта и т. д.

2. Если в ответ передается строка со словом "success", то это будет означать сообщение об успешном окончании обработки файла.

3. Если в ходе запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово "failure", а в следующих строках - описание ошибки, произошедшей в процессе обработки запроса.

4. Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.

Прием заказов с сайта

Заказы, оформленные на сайте, загружаются в систему "1С:Предприятие 8".

При этом соблюдаются следующие 8 правил:

1. При передаче в систему "1С:Предприятие 8" в заказе устанавливается категория "Заказ с сайта".

2. При формировании заказа в системе "1С:Предприятие 8" записываются номер и дата заказа, с которыми он оформлен на сайте.

3. Поиск контрагента осуществляется по ИНН (индивидуальный номер налогоплательщика) или наименованию (в зависимости от настроек).

4. При загрузке заказа производится поиск договора с контрагентом. Договор ищется среди существующих договоров с клиентом, с признаком ведения взаиморасчетов по заказам (по указанной в настройках загрузки Организации). Если не находится ни один договор, то создается новый.

5. При загрузке заказа загружаются все его свойства, переданные с сайта. Свойства ищутся в системе "1С:Предприятие 8" по наименованию. Если с таким наименованием свойства нет, то заводится новое свойство со значениями типа строка или число.

6. Заказ может модифицироваться в системе "1С:Предприятие 8", при этом его изменения будут выгружаться на сайт.

7. Если заказ оплачивается или отгружается в системе "1С:Предприятие 8", то "состояния" заказа по оплате и по отгрузке выгружаются на сайт только при полном выполнении операции (полной оплате и полной отгрузке). До этого момента заказ считается неоплаченным и неотгруженным.

8. После каждой выгрузки заказа на сайт на стороне сайта определяются значения его категорий (ссылка на категории). Эти значения устанавливаются в системе "1С:Предприятие 8" так, как они присвоены заказу на сайте.

Начало сеанса

Выгрузка каталога начинается с того, что система "1С:Предприятие 8" отправляет http-запрос следующего вида:

http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=checkauth.

В ответ система управления сайтом передает системе "1С:Предприятие 8" три строки (используется разделитель строк "\n"):

Все последующие запросы к системе управления сайтом со стороны "1С:Предприятия 8" содержат в заголовке запроса имя и значение Cookie.

Далее следует запрос следующего вида:

http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=init

В ответ система управления сайтом передает две строки:

1. zip=yes, если сервер поддерживает обмен в zip-формате - в этом случае на следующем шаге файлы должны быть упакованы в zip-формате, или zip=no - в этом случае на следующем шаге файлы не упаковываются и передаются каждый по отдельности.

2. file_limit=<число>, где <число> - максимально допустимый размер файла в байтах для передачи за один запрос. Если системе "1С:Предприятие 8" понадобится передать файл большего размера, его следует разделить на фрагменты.

Получение файла обмена с сайта

На сайт отправляется запрос вида:

http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=query.

Сайт передает сведения о заказах в формате CommerceML. В случае успешного получения и записи заказов "1С:Предприятие 8" передает на сайт запрос вида:

http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=success

Отправка файла обмена на сайт

Система "1С:Предприятие 8" отправляет на сайт запрос вида:

http://<сайт>/<путь>/1c_exchange.php?type=sale&mode=file&filename=<имя файла>

который загружает на сервер файл обмена, посылая содержимое файла в виде POST.

В случае успешной записи файла система управления сайтом передает строку со словом "success". Дополнительно на следующих строчках могут содержаться замечания по загрузке.

Если в ходе какого-либо запроса произошла ошибка, то в первой строке ответа системы управления сайтом будет содержаться слово "failure", а в следующих строках - описание ошибки, произошедшей в процессе обработки запроса. Если произошла необрабатываемая ошибка уровня ядра продукта или sql-запроса, то будет возвращен html-код.